Calculate signal RGB from linear RGB, XYZ, or Lab
SignalRGBfromLinearRGB( RGB, space='sRGB', which='scene', TF=NULL, maxSignal=1 )RGBfromXYZ( XYZ, space='sRGB', which='scene', TF=NULL, maxSignal=1 )
RGBfromLab( Lab, space='sRGB', which='scene', TF=NULL, maxSignal=1 )
a data.frame
with N rows and these columns
signal RGB.
If TF
is not the identity, the computed linear RGBs are clamped to [0,1]\(^3\) if necessary,
which implies that the output signal RGBs are inside the cube [0,maxSignal
]\(^3\).
Values are not rounded.
a logical, TRUE means one or more of the computed linear RGBs were actually clamped to [0,1].
In RGBfromLab()
, if a=b=0 exactly, the R=G=B exactly.
In case of error, the functions return NULL.
a numeric Nx3 matrix with linear RGB coordinates in the rows, or a vector that can be converted to such a matrix, by row. The RGB may be outside the corresponding domain box (either scene or display), see Details.
a numeric Nx3 matrix with CIE XYZ coordinates in the rows, or a vector that can be converted to such a matrix, by row.
The XYZ are assumed to be viewed under the white-point of the given RGB space
.
a numeric Nx3 matrix with CIE Lab coordinates in the rows, or a vector that can be converted to such a matrix, by row.
the name of an installed RGB space. The name matching is partial and case-insensitive.
either 'scene'
or 'display'
.
For RGBfromXYZ()
which
describes the input XYZ.
For SignalRGBfromLinearRGB()
which
describes the input RGB.
if not NULL
, TF
is a TransferFunction
that overrides the appropriate transfer function of space
.
TF
can also be a positive number.
If TF=1
, then TF
is set to identity.TF
,
so the returned RGB values are actually linear, and they are not clamped to the appropriate domain box
(see Value).
If TF!=1
it is used to create either
power.EOTF()
or power.OETF()
as approriate.
If TF
is not NULL
in SignalRGBfromLinearRGB()
, then space
is ignored.
maximum value of non-linear RGB
.
Other common values are 100, 255, 1023, 4095, and 65535.
Even when 1, they are still taken to be non-linear Signal values.
In RGBfromXYZ()
, the conversion is done in these steps:
XYZ → linear RGB using the 3x3 matrix for the given space
and which
if TF
is not the identity, the linear RGBs are clamped to [0,1]\(^3\) if necessary
linear RGB → signal RGB using SignalRGBfromLinearRGB()
and all other the given arguments
In RGBfromLab()
, Lab → XYZ
is calculated using
spacesXYZ::XYZfromLab()
,
with the white point
(either 'scene'
or 'display'
) of the given RGB space.
Wikipedia. RGB color space. https://en.wikipedia.org/wiki/RGB_color_space
XYZfromRGB()
,
LinearRGBfromSignalRGB()
,
installRGB()
,
identity.TF
,
spacesXYZ::XYZfromLab()
RGBfromXYZ( c(80.310897,90.306510,84.613450, 100,100,100)/100, max=255 )
## RGB.R RGB.G RGB.B OutOfGamut
## 1 230.1676 249.4122 225.2472 FALSE
## 2 255.0000 249.1125 244.4704 TRUE
Run the code above in your browser using DataLab